<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    
    <title>聚范社区文档 | Dylan.Hu&#39;Memory</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    
        <meta name="keywords" content="" />
    
    <meta name="description" content="聚范社区文档2.0.1 版本1. 圈子小喇叭需求：圈子页面增加小喇嘛入口，记录当前圈子用户送礼情况。
分析：

: 页面可采用UITabView，自定义UITableViewCell;由于每个Cell的控件保持不变，送礼区根据设备动态调整宽度，这里采用AutoLayout来布局子控件较为方便。

准备工作：
创建控制器 - BaseTableViewController 继承自BaseTableV">
<meta property="og:type" content="article">
<meta property="og:title" content="聚范社区文档">
<meta property="og:url" content="http://yoursite.com/2017/05/16/聚范社区文档/index.html">
<meta property="og:site_name" content="Dylan.Hu'Memory">
<meta property="og:description" content="聚范社区文档2.0.1 版本1. 圈子小喇叭需求：圈子页面增加小喇嘛入口，记录当前圈子用户送礼情况。
分析：

: 页面可采用UITabView，自定义UITableViewCell;由于每个Cell的控件保持不变，送礼区根据设备动态调整宽度，这里采用AutoLayout来布局子控件较为方便。

准备工作：
创建控制器 - BaseTableViewController 继承自BaseTableV">
<meta property="og:image" content="http://yoursite.com/images/jufan_logo.png">
<meta property="og:updated_time" content="2017-05-17T04:39:52.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="聚范社区文档">
<meta name="twitter:description" content="聚范社区文档2.0.1 版本1. 圈子小喇叭需求：圈子页面增加小喇嘛入口，记录当前圈子用户送礼情况。
分析：

: 页面可采用UITabView，自定义UITableViewCell;由于每个Cell的控件保持不变，送礼区根据设备动态调整宽度，这里采用AutoLayout来布局子控件较为方便。

准备工作：
创建控制器 - BaseTableViewController 继承自BaseTableV">
<meta name="twitter:image" content="http://yoursite.com/images/jufan_logo.png">
    

    
        <link rel="alternate" href="/" title="Dylan.Hu&#39;Memory" type="application/atom+xml" />
    

    

    <link rel="stylesheet" href="/libs/font-awesome/css/font-awesome.min.css">
    <link rel="stylesheet" href="/libs/titillium-web/styles.css">
    <link rel="stylesheet" href="/libs/source-code-pro/styles.css">

    <link rel="stylesheet" href="/css/style.css">

    <script src="/libs/jquery/2.0.3/jquery.min.js"></script>
    
    
        <link rel="stylesheet" href="/libs/lightgallery/css/lightgallery.min.css">
    
    
    

</head>

<body>
    <div id="wrap">
        <header id="header">
    <div id="header-outer" class="outer">
        <div class="container">
            <div class="container-inner">
                <div id="header-title">
                    <h1 class="logo-wrap">
                        <a href="/" class="logo"></a>
                    </h1>
                    
                </div>
                <div id="header-inner" class="nav-container">
                    <a id="main-nav-toggle" class="nav-icon fa fa-bars"></a>
                    <div class="nav-container-inner">
                        <ul id="main-nav">
                            
                                <li class="main-nav-list-item" >
                                    <a class="main-nav-list-link" href="/">主页</a>
                                </li>
                            
                                        <ul class="main-nav-list"><li class="main-nav-list-item"><a class="main-nav-list-link" href="/categories/聚范/">聚范</a></li></ul>
                                    
                        </ul>
                        <nav id="sub-nav">
                            <div id="search-form-wrap">

    <form class="search-form">
        <input type="text" class="ins-search-input search-form-input" placeholder="搜索" />
        <button type="submit" class="search-form-submit"></button>
    </form>
    <div class="ins-search">
    <div class="ins-search-mask"></div>
    <div class="ins-search-container">
        <div class="ins-input-wrapper">
            <input type="text" class="ins-search-input" placeholder="想要查找什么..." />
            <span class="ins-close ins-selectable"><i class="fa fa-times-circle"></i></span>
        </div>
        <div class="ins-section-wrapper">
            <div class="ins-section-container"></div>
        </div>
    </div>
</div>
<script>
(function (window) {
    var INSIGHT_CONFIG = {
        TRANSLATION: {
            POSTS: '文章',
            PAGES: '页面',
            CATEGORIES: '分类',
            TAGS: '标签',
            UNTITLED: '(未命名)',
        },
        ROOT_URL: '/',
        CONTENT_URL: '/content.json',
    };
    window.INSIGHT_CONFIG = INSIGHT_CONFIG;
})(window);
</script>
<script src="/js/insight.js"></script>

</div>
                        </nav>
                    </div>
                </div>
            </div>
        </div>
    </div>
</header>
        <div class="container">
            <div class="main-body container-inner">
                <div class="main-body-inner">
                    <section id="main">
                        <div class="main-body-header">
    <h1 class="header">
    
    <a class="page-title-link" href="/categories/聚范/">聚范</a>
    </h1>
</div>
                        <div class="main-body-content">
                            <article id="post-聚范社区文档" class="article article-single article-type-post" itemscope itemprop="blogPost">
    <div class="article-inner">
        
            <header class="article-header">
                
    
        <h1 class="article-title" itemprop="name">
        聚范社区文档
        </h1>
    

            </header>
        
        
            <div class="article-subtitle">
                <a href="/2017/05/16/聚范社区文档/" class="article-date">
    <time datetime="2017-05-16T02:15:54.000Z" itemprop="datePublished">2017-05-16</time>
</a>
                
            </div>
        
        
        <div class="article-entry" itemprop="articleBody">
            <h1 id="聚范社区文档"><a href="#聚范社区文档" class="headerlink" title="聚范社区文档"></a>聚范社区文档</h1><h2 id="2-0-1-版本"><a href="#2-0-1-版本" class="headerlink" title="2.0.1 版本"></a>2.0.1 版本</h2><h3 id="1-圈子小喇叭"><a href="#1-圈子小喇叭" class="headerlink" title="1. 圈子小喇叭"></a>1. 圈子小喇叭</h3><p><strong>需求</strong>：圈子页面增加小喇嘛入口，记录当前圈子用户送礼情况。</p>
<p>分析：</p>
<blockquote>
<p>: 页面可采用UITabView，自定义UITableViewCell;由于每个Cell的控件保持不变，送礼区根据设备动态调整宽度，这里采用AutoLayout来布局子控件较为方便。</p>
</blockquote>
<p><strong>准备工作</strong>：</p>
<p>创建控制器 - BaseTableViewController 继承自BaseTableViewController<br>创建数据模型 - QLCircleTrumpetModel, 以及数据管理模型 - QLCircleTrumpetModelManager<br>自定义UITableViewCell - QLTrumpetTableViewCell</p>
<p><font face=""><strong>主要实现思路</strong> </font>  ：利用 QLCircleTrumpetModelManager模型对网络请求部分进一步封装，尽量避免控制器与网络请求API直接交互，采用将数据在集中处理，大大减少了控制器层的代码，使控制器看起来更加清楚明了，降低代码间的耦合性。</p>
<p><font face="黑体" color="33333"><strong>主要代码实现 :</strong></font>    QLCircleTrumpetModel.h</p>
<figure class="highlight objc"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line"><span class="class"><span class="keyword">@interface</span> <span class="title">QLRankListModelManager</span> : <span class="title">NSObject</span></span></div><div class="line"><span class="comment">/**</span></div><div class="line">  请求圈子贡献榜</div><div class="line"> @param circleID 圈子ID</div><div class="line"> @param topType 榜单类型 0 总榜 1 周榜</div><div class="line"> @param requsetSuccessfull 请求成功的回调</div><div class="line"> @param requestFailed 请求失败的回调</div><div class="line"> */</div><div class="line">+ (<span class="keyword">void</span>)sendGetCircleRankListsRequestWithCircleID:(<span class="built_in">NSString</span> *)circleID topType:(<span class="built_in">NSInteger</span>)topType requestSuccessfull:(RequestSuccessFullResultBlock)requsetSuccessfull requestFailed:(RequestFailedResultBlock)requestFailed;</div><div class="line"><span class="keyword">@end</span></div></pre></td></tr></table></figure>
<p>QLCircleTrumpetModel.m</p>
<figure class="highlight objc"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div></pre></td><td class="code"><pre><div class="line"><span class="class"><span class="keyword">@implementation</span> <span class="title">QLRankListModelManager</span></span></div><div class="line"><span class="meta">#pragma mark - 获取贡献榜数据</span></div><div class="line">+ (<span class="keyword">void</span>)sendGetCircleRankListsRequestWithCircleID:(<span class="built_in">NSString</span> *)circleID topType:(<span class="built_in">NSInteger</span>)topType requestSuccessfull:(RequestSuccessFullResultBlock)requsetSuccessfull requestFailed:(RequestFailedResultBlock)requestFailed &#123;</div><div class="line">    QLRankListModelManager *manager = [[QLRankListModelManager alloc] init];</div><div class="line">    manager.getCircleRankListApi.circleID = circleID;</div><div class="line">    manager.getCircleRankListApi.type = topType;</div><div class="line">    [manager.getCircleRankListApi sendRequestToSever];</div><div class="line">    [manager.getCircleRankListApi setCompletionBlockWithSuccess:^(GGBaseRequest *request) &#123;</div><div class="line">        <span class="keyword">if</span> (request.resultModel.state == <span class="number">0</span>) &#123;</div><div class="line">            <span class="built_in">NSDictionary</span> *dict = <span class="literal">nil</span>;</div><div class="line">            <span class="keyword">if</span> ([request.resultModel.content isKindOfClass:[<span class="built_in">NSDictionary</span> <span class="keyword">class</span>]]) &#123;</div><div class="line">                dict = request.resultModel.content;</div><div class="line">                <span class="keyword">if</span> ([dict[<span class="string">@"list"</span>] isKindOfClass:[<span class="built_in">NSArray</span> <span class="keyword">class</span>]]) &#123;</div><div class="line">                    <span class="built_in">NSArray</span> *modelArray = [QLRankListModel changeToRanklistModelArrayWithArray:dict[<span class="string">@"list"</span>]];</div><div class="line">                    <span class="keyword">int</span> i = <span class="number">0</span>;</div><div class="line">                    <span class="keyword">for</span> (QLRankListModel *model <span class="keyword">in</span> modelArray) &#123; <span class="comment">// 设置前三名类型</span></div><div class="line">                        ++i;</div><div class="line">                        model.rankNum = [<span class="built_in">NSString</span> stringWithFormat:<span class="string">@"%zd"</span>,i];</div><div class="line">                        <span class="keyword">if</span> (i &lt;= <span class="number">3</span>) &#123;</div><div class="line">                            model.rankListType = i;</div><div class="line">                        &#125; <span class="keyword">else</span> &#123;</div><div class="line">                            model.rankListType = <span class="number">0</span>;</div><div class="line">                        &#125;</div><div class="line">                    &#125;                    </div><div class="line">                    <span class="keyword">if</span> (requsetSuccessfull) &#123;</div><div class="line">                        requsetSuccessfull(modelArray,QLHttpRequestServerStateSuccess);</div><div class="line">                    &#125;</div><div class="line">                &#125;                </div><div class="line">            &#125; <span class="keyword">else</span> &#123;</div><div class="line">                <span class="keyword">if</span> (requsetSuccessfull) &#123;</div><div class="line">                    requsetSuccessfull(<span class="string">@"数据返回格式错误"</span>,QLHttpRequestServerStateFail);</div><div class="line">                &#125;</div><div class="line">            &#125;</div><div class="line">        &#125;</div><div class="line">    &#125; failure:^(GGBaseRequest *request) &#123;</div><div class="line">        <span class="keyword">if</span> (requestFailed) &#123;</div><div class="line">            requestFailed(request.resultModel.message,QLHttpRequestServerStateFail);</div><div class="line">        &#125;</div><div class="line">    &#125;];   </div><div class="line">&#125;</div><div class="line"><span class="keyword">@end</span></div></pre></td></tr></table></figure>
<p>通过一个类方法将网络请求部分封装起来，这样减少大量控制器中的代码，使控制器看起来更加简洁。</p>
<p>–</p>
<h3 id="2-圈子贡献榜"><a href="#2-圈子贡献榜" class="headerlink" title="2. 圈子贡献榜"></a>2. 圈子贡献榜</h3><p><strong>需求</strong>：修改公告，增加公告详情，增加贡献榜，进入圈子模块显示贡献榜排名前7位的用户头像，点击进入贡献榜排行榜；</p>
<p>公告页面右上角增加关闭按钮，每一次进入圈子页面显示公告页，用户点击关闭按钮可关闭公告页面，点击公告页面进入公告详情页。<br>贡献榜分为周榜和总榜样式同富豪榜。</p>
<p>分析：</p>
<blockquote>
<p>: 排行榜样式分为4中，前3名头像含描边，大小各不同，其余均为普通样式，则在数据模型中定义一个类型枚举，通过枚举常量来控制应显示的样式。</p>
</blockquote>
<figure class="highlight objc"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">typedef</span> <span class="built_in">NS_ENUM</span>(<span class="built_in">NSUInteger</span> , QLRankListType) &#123;</div><div class="line">    QLRankListTypeDefault = <span class="number">0</span>,</div><div class="line">    QLRankListTypeChampion = <span class="number">1</span>,  <span class="comment">// 冠军</span></div><div class="line">    QLRankListTypeSecondPlace = <span class="number">2</span>, <span class="comment">// 亚军</span></div><div class="line">    QLRankListTypeThirdPlace = <span class="number">3</span> <span class="comment">// 季军</span></div><div class="line">&#125;;</div></pre></td></tr></table></figure>
<p>同样，这里定义了处理数据的模型QLRankListModel，网络请求管理模型QLRankListModelManager来处理相应的数据。</p>
<p>–</p>
<h3 id="3-圈子公告"><a href="#3-圈子公告" class="headerlink" title="3. 圈子公告"></a>3. 圈子公告</h3><p><strong>需求 ：</strong> 用户每次进入圈子主页热帖显示公告，点击关闭按钮关闭公告，再次进入圈子显示公告，点击公告进入公告详情页。</p>
<p><strong>处理思路：</strong> 在圈子中热帖控制器的UITableView设置tableViewHeaderView，关闭公告时设置headerView的高度即可</p>
<p><strong><font color="sky-blue" face="“黑体”"> 代码实现 ：</font></strong></p>
<figure class="highlight objc"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div></pre></td><td class="code"><pre><div class="line"><span class="comment">// 公告</span></div><div class="line"><span class="built_in">UIView</span> *noticeBgView = [[<span class="built_in">UIView</span> alloc] initWithFrame:<span class="built_in">CGRectMake</span>(<span class="number">0</span>, <span class="number">60</span>, kDeviceWidth, <span class="number">150</span>)];</div><div class="line">[headerView addSubview:noticeBgView];</div><div class="line"><span class="keyword">self</span>.noticeBgView = noticeBgView;</div><div class="line"></div><div class="line"><span class="comment">// 添加关闭按钮</span></div><div class="line"><span class="built_in">UIButton</span> *closeButton = [[<span class="built_in">UIButton</span> alloc] initWithFrame:<span class="built_in">CGRectMake</span>(kDeviceWidth - <span class="number">44</span>, <span class="number">0</span>, <span class="number">44</span>, <span class="number">44</span>)];</div><div class="line">[closeButton addTarget:<span class="keyword">self</span> action:<span class="keyword">@selector</span>(closeButtonTouchUpInside) forControlEvents:<span class="built_in">UIControlEventTouchUpInside</span>];</div><div class="line"></div><div class="line"><span class="comment">// 公告标题</span></div><div class="line"><span class="built_in">UILabel</span> *noticeTitleLabel = [[<span class="built_in">UILabel</span> alloc] initWithFrame:<span class="built_in">CGRectMake</span>(<span class="number">20</span>, <span class="number">44</span>, <span class="number">60</span>, <span class="number">18</span>)];</div><div class="line">[noticeBgView addSubview:noticeTitleLabel];</div><div class="line">noticeTitleLabel.text = <span class="string">@"公告"</span>;</div><div class="line"></div><div class="line"><span class="comment">// 公告内容</span></div><div class="line"><span class="built_in">UILabel</span> *noticeContentLabel = [[<span class="built_in">UILabel</span> alloc] initWithFrame:<span class="built_in">CGRectMake</span>(<span class="number">20</span>, <span class="number">65</span>, kDeviceWidth - <span class="number">40</span>, <span class="number">65</span>)];</div><div class="line">[noticeBgView addSubview:noticeContentLabel];</div><div class="line"><span class="keyword">self</span>.noticeContentLabel = noticeContentLabel;</div><div class="line"></div><div class="line"><span class="comment">// 添加点击进入详情的手势</span></div><div class="line"><span class="built_in">UITapGestureRecognizer</span> *noticeTapGes = [[<span class="built_in">UITapGestureRecognizer</span> alloc] initWithTarget:<span class="keyword">self</span> action:<span class="keyword">@selector</span>(noticeContentLabelDidTapped:)];</div><div class="line">[noticeBgView addGestureRecognizer:noticeTapGes];</div></pre></td></tr></table></figure>
<hr>
<p><strong><em>总结 :</em></strong> <font size="2" color="8c8c">以上几块实现的方式有多种，属于简单型一类的问题，在开发过程中更多注意的是细节方面。本次任务不同以往的是用了模型管理类来处理网络请求大部分逻辑，减少控制器的负担，对控制器中的代码进一步封装，避免零散代码碎片化，集中管理，降低耦合等等。</font></p>
<p>-</p>

        </div>
        <footer class="article-footer">
            



    <a data-url="http://yoursite.com/2017/05/16/聚范社区文档/" data-id="cj2si0w6b0000isul57ikhrci" class="article-share-link"><i class="fa fa-share"></i>分享到</a>
<script>
    (function ($) {
        $('body').on('click', function() {
            $('.article-share-box.on').removeClass('on');
        }).on('click', '.article-share-link', function(e) {
            e.stopPropagation();

            var $this = $(this),
                url = $this.attr('data-url'),
                encodedUrl = encodeURIComponent(url),
                id = 'article-share-box-' + $this.attr('data-id'),
                offset = $this.offset(),
                box;

            if ($('#' + id).length) {
                box = $('#' + id);

                if (box.hasClass('on')){
                    box.removeClass('on');
                    return;
                }
            } else {
                var html = [
                    '<div id="' + id + '" class="article-share-box">',
                        '<input class="article-share-input" value="' + url + '">',
                        '<div class="article-share-links">',
                            '<a href="https://twitter.com/intent/tweet?url=' + encodedUrl + '" class="article-share-twitter" target="_blank" title="Twitter"></a>',
                            '<a href="https://www.facebook.com/sharer.php?u=' + encodedUrl + '" class="article-share-facebook" target="_blank" title="Facebook"></a>',
                            '<a href="http://pinterest.com/pin/create/button/?url=' + encodedUrl + '" class="article-share-pinterest" target="_blank" title="Pinterest"></a>',
                            '<a href="https://plus.google.com/share?url=' + encodedUrl + '" class="article-share-google" target="_blank" title="Google+"></a>',
                        '</div>',
                    '</div>'
                ].join('');

              box = $(html);

              $('body').append(box);
            }

            $('.article-share-box.on').hide();

            box.css({
                top: offset.top + 25,
                left: offset.left
            }).addClass('on');

        }).on('click', '.article-share-box', function (e) {
            e.stopPropagation();
        }).on('click', '.article-share-box-input', function () {
            $(this).select();
        }).on('click', '.article-share-box-link', function (e) {
            e.preventDefault();
            e.stopPropagation();

            window.open(this.href, 'article-share-box-window-' + Date.now(), 'width=500,height=450');
        });
    })(jQuery);
</script>

        </footer>
    </div>
</article>

    <section id="comments">
    
        
    <div id="disqus_thread">
        <noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
    </div>

    
    </section>


                        </div>
                    </section>
                    <aside id="sidebar">
    <a class="sidebar-toggle" title="Expand Sidebar"><i class="toggle icon"></i></a>
    <div class="sidebar-top">
        <p>关注我 :</p>
        <ul class="social-links">
            
                
                <li>
                    <a class="social-tooltip" title="google-plus" href="/" target="_blank">
                        <i class="icon fa fa-google-plus"></i>
                    </a>
                </li>
                
            
                
                <li>
                    <a class="social-tooltip" title="github" href="/" target="_blank">
                        <i class="icon fa fa-github"></i>
                    </a>
                </li>
                
            
                
                <li>
                    <a class="social-tooltip" title="weibo" href="/" target="_blank">
                        <i class="icon fa fa-weibo"></i>
                    </a>
                </li>
                
            
                
                <li>
                    <a class="social-tooltip" title="rss" href="/" target="_blank">
                        <i class="icon fa fa-rss"></i>
                    </a>
                </li>
                
            
        </ul>
    </div>
    
        
    
    <div class="widgets-container">
        
            
                
    <div class="widget-wrap">
        <h3 class="widget-title">最新文章</h3>
        <div class="widget">
            <ul id="recent-post" class="">
                
                    <li>
                        
                        <div class="item-thumbnail">
                            <a href="/2017/05/16/聚范社区文档/" class="thumbnail">
    
    
        <span style="background-image:url(/images/jufan_logo.png)" alt="聚范社区文档" class="thumbnail-image"></span>
    
    
</a>

                        </div>
                        
                        <div class="item-inner">
                            <p class="item-category"><a class="article-category-link" href="/categories/聚范/">聚范</a></p>
                            <p class="item-title"><a href="/2017/05/16/聚范社区文档/" class="title">聚范社区文档</a></p>
                            <p class="item-date"><time datetime="2017-05-16T02:15:54.000Z" itemprop="datePublished">2017-05-16</time></p>
                        </div>
                    </li>
                
            </ul>
        </div>
    </div>

            
                
    <div class="widget-wrap widget-list">
        <h3 class="widget-title">分类</h3>
        <div class="widget">
            <ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/聚范/">聚范</a><span class="category-list-count">1</span></li></ul>
        </div>
    </div>


            
                
    <div class="widget-wrap widget-list">
        <h3 class="widget-title">归档</h3>
        <div class="widget">
            <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2017/05/">五月 2017</a><span class="archive-list-count">1</span></li></ul>
        </div>
    </div>


            
                

            
                

            
                
    <div class="widget-wrap widget-list">
        <h3 class="widget-title">链接</h3>
        <div class="widget">
            <ul>
                
                    <li>
                        <a href="http://hexo.io">Hexo</a>
                    </li>
                
            </ul>
        </div>
    </div>


            
        
    </div>
</aside>
                </div>
            </div>
        </div>
        <footer id="footer">
    <div class="container">
        <div class="container-inner">
            <a id="back-to-top" href="javascript:;"><i class="icon fa fa-angle-up"></i></a>
            <div class="credit">
                <h1 class="logo-wrap">
                    <a href="/" class="logo"></a>
                </h1>
                <p>&copy; 2017 Dylan.Hu&#39;Memory</p>
            </div>
        </div>
    </div>
</footer>
        
    
    <script>
    var disqus_shortname = 'hexo-theme-hueman';
    
    
    var disqus_url = 'http://yoursite.com/2017/05/16/聚范社区文档/';
    
    (function() {
    var dsq = document.createElement('script');
    dsq.type = 'text/javascript';
    dsq.async = true;
    dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
    </script>




    
        <script src="/libs/lightgallery/js/lightgallery.min.js"></script>
        <script src="/libs/lightgallery/js/lg-thumbnail.min.js"></script>
        <script src="/libs/lightgallery/js/lg-pager.min.js"></script>
        <script src="/libs/lightgallery/js/lg-autoplay.min.js"></script>
        <script src="/libs/lightgallery/js/lg-fullscreen.min.js"></script>
        <script src="/libs/lightgallery/js/lg-zoom.min.js"></script>
        <script src="/libs/lightgallery/js/lg-hash.min.js"></script>
        <script src="/libs/lightgallery/js/lg-share.min.js"></script>
        <script src="/libs/lightgallery/js/lg-video.min.js"></script>
    


<!-- Custom Scripts -->
<script src="/js/main.js"></script>

    </div>
</body>
</html>
